/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ppsa.dao;

import com.ppsa.bean.PerfilBean;
import com.ppsa.bean.ResultadoBean;
import com.ppsa.common.Constantes;
import java.util.List;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;

/**
 *
 * @author AdminTdp
 */
public class PerfilDao extends AccesoDao {

    public PerfilDao() throws AccesoDaoException {
        super();
    }
    public List<PerfilBean> selectPerfil() throws Exception {
        List<PerfilBean> lstL_perfil = new ArrayList<PerfilBean>();


        PerfilBean objL_perfil = null;
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_selectPerfil() }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_perfil = new PerfilBean();
                //System.out.println("--->" + objPt_rs.getString("NOMBRE"));
                objL_perfil.setStrpv_codigoPerfil(objPt_rs.getString("ID_PERFIL"));
                objL_perfil.setStrpv_nombrePerfil(objPt_rs.getString("NOMBRE"));
                lstL_perfil.add(objL_perfil);
            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }

        return lstL_perfil;
    }
    public List<PerfilBean> listarPerfil(PerfilBean objA_PerfilBean) throws Exception {
        List<PerfilBean> lstL_perfil = new ArrayList<PerfilBean>();


        PerfilBean objL_perfil = null;
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarPerfil() }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_perfil = new PerfilBean();
                //System.out.println("--->" + objPt_rs.getString("NOMBRE"));
                objL_perfil.setStrpv_codigoPerfil(objPt_rs.getString("ID_PERFIL"));
                objL_perfil.setStrpv_nombrePerfil(objPt_rs.getString("NOMBRE"));
                objL_perfil.setStrpv_descripcionPerfil(objPt_rs.getString("DESCRIPCION"));
                objL_perfil.setStrpv_codigoEstadoPerfil(objPt_rs.getString("ESTADO"));
                objL_perfil.setStrpv_permisoCreacion(objPt_rs.getString("PERMISO_CREACION"));
                objL_perfil.setStrpv_permisoRevisar(objPt_rs.getString("PERMISO_REVISAR"));
                objL_perfil.setStrpv_permisoAprobar(objPt_rs.getString("PERMISO_APROBAR"));
                objL_perfil.setStrpv_permisoConsulta(objPt_rs.getString("PERMISO_CONSULTA"));

                lstL_perfil.add(objL_perfil);
            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }

        return lstL_perfil;
    }

    public PerfilBean obtenerPerfil(PerfilBean objA_PerfilBean) throws Exception {
        
        PerfilBean objL_perfil  = new PerfilBean();;
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_obtenerPerfil(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setInt(1, Integer.parseInt(objA_PerfilBean.getStrpv_codigoPerfil()));
            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                
                //System.out.println("--->" + objPt_rs.getString("NOMBRE"));
                objL_perfil.setStrpv_codigoPerfil(objPt_rs.getString("ID_PERFIL"));
                objL_perfil.setStrpv_nombrePerfil(objPt_rs.getString("NOMBRE"));
                objL_perfil.setStrpv_descripcionPerfil(objPt_rs.getString("DESCRIPCION"));
                objL_perfil.setStrpv_codigoEstadoPerfil(objPt_rs.getString("ESTADO"));
                objL_perfil.setStrpv_permisoCreacion(objPt_rs.getString("PERMISO_CREACION"));
                objL_perfil.setStrpv_permisoRevisar(objPt_rs.getString("PERMISO_REVISAR"));
                objL_perfil.setStrpv_permisoAprobar(objPt_rs.getString("PERMISO_APROBAR"));
                objL_perfil.setStrpv_permisoConsulta(objPt_rs.getString("PERMISO_CONSULTA"));
                objL_perfil.setStrpv_permisoAdminUsuario(objPt_rs.getString("PERMISO_ADMINUSUARIO"));
                objL_perfil.setStrpv_permisoAdminPerfil(objPt_rs.getString("PERMISO_ADMINPERFIL"));
                objL_perfil.setStrpv_permisoAdminReunion(objPt_rs.getString("PERMISO_ADMINREUNION"));

            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        return objL_perfil;
    }

    public Integer actualizarPerfil(PerfilBean objA_PerfilBean) throws Exception {

        System.out.println("[PerfilDao/actualizarPerfil] << ENTER");

        Integer intL_temp = -1;
        Integer intL_resultado = -1;
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_actualizarPerfil( ?,?,?,?,?,?,?,?,?,?,?,? ) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            if( objA_PerfilBean.getStrpv_codigoPerfil() != null && objA_PerfilBean.getStrpv_codigoPerfil().trim().length() > 0 ) {
                intL_temp = Integer.parseInt(objA_PerfilBean.getStrpv_codigoPerfil());
            }

            objPt_cstmt.setInt(1, intL_temp);
            objPt_cstmt.setString(2, objA_PerfilBean.getStrpv_nombrePerfil());
            objPt_cstmt.setString(3, objA_PerfilBean.getStrpv_descripcionPerfil());
            objPt_cstmt.setString(4, objA_PerfilBean.getStrpv_codigoEstadoPerfil());
            objPt_cstmt.setString(5, objA_PerfilBean.getStrpv_permisoCreacion());
            objPt_cstmt.setString(6, objA_PerfilBean.getStrpv_permisoRevisar());
            objPt_cstmt.setString(7, objA_PerfilBean.getStrpv_permisoAprobar());
            objPt_cstmt.setString(8, objA_PerfilBean.getStrpv_permisoConsulta());
            objPt_cstmt.setString(9, objA_PerfilBean.getStrpv_permisoAdminUsuario());
            objPt_cstmt.setString(10, objA_PerfilBean.getStrpv_permisoAdminPerfil());
            objPt_cstmt.setString(11, objA_PerfilBean.getStrpv_permisoAdminReunion());
            objPt_cstmt.registerOutParameter(12, java.sql.Types.INTEGER );

            intL_resultado = objPt_cstmt.executeUpdate();
          
            intL_resultado = objPt_cstmt.getInt(12);
             

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        System.out.println("[PerfilDao/actualizarPerfil] << EXIT");
        return intL_resultado;
    }


    public ResultadoBean eliminarPerfil(PerfilBean objA_PerfilBean)  throws Exception {
        Integer intL_temp = -1;
        Integer intL_resultado = -1;
        ResultadoBean objResultado = new ResultadoBean();
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_eliminarPerfil(?,?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            if( objA_PerfilBean.getStrpv_codigoPerfil() != null && objA_PerfilBean.getStrpv_codigoPerfil().trim().length() > 0 ) {
                intL_temp = Integer.parseInt(objA_PerfilBean.getStrpv_codigoPerfil());
            }
            objPt_cstmt.setInt(1, intL_temp);
            objPt_cstmt.registerOutParameter(2, java.sql.Types.VARCHAR );
            objPt_cstmt.execute();
            objResultado.setStrpv_mensaje(objPt_cstmt.getString(2));

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        System.out.println("[PerfilDao/actualizarPerfil] << EXIT");
        return objResultado;
    }
}
